package com.ly.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ly.system.system.bean.entity.SysUser;
import com.ly.system.system.bean.model.UserDeptVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用户-mapper
 *
 * @author jeecg
 * @since 2018-12-20
 */
public interface SysUserMapper extends BaseMapper<SysUser> {

    /**
     * 根据部门Ids,查询部门下用户信息
     *
     * @param page
     * @param entity 用户登录账户
     * @return
     */
    IPage<SysUser> getUserPage(Page page, @Param("dto") SysUser entity);

    /**
     * 根据角色Id查询用户信息
     *
     * @param page
     * @param roleId   角色id
     * @param username 用户登录账户
     * @return
     */
    IPage<SysUser> getUserByRoleId(Page page, @Param("roleId") String roleId, @Param("username") String username);
    /**
     * 根据手机号查询用户信息
     *
     * @param phone
     * @return
     */
    SysUser getUserByPhone(@Param("phone") String phone);

    /**
     * 根据邮箱查询用户信息
     *
     * @param email
     * @return
     */
    SysUser getUserByEmail(@Param("email") String email);

    /**
     * 根据 orgCode 查询用户，包括子部门下的用户
     *
     * @param page       分页对象, 自动分页,必须放在第一位
     * @param id
     * @return
     */
    List<UserDeptVO> getUserByDept(IPage page, @Param("id") String id);

    /**
     * 批量删除角色与用户关系
     *
     * @param roleIdArray
     * @author jeecg
     * @Date 2019/12/13 16:10
     */
    void deleteBathRoleUserRelation(@Param("roleIdArray") String[] roleIdArray);

    /**
     * 批量删除角色与权限关系
     *
     * @param roleIdArray
     * @author jeecg
     * @Date 2019/12/13 16:10
     */
    void deleteBathRolePermissionRelation(@Param("roleIdArray") String[] roleIdArray);

    /**
     * 彻底删除被逻辑删除的用户
     *
     * @param userIds 多个用户id
     * @return int
     */
    int deleteLogicDeleted(@Param("userIds") List<String> userIds);
}
